<?php 

/** 
 * Formulario padrao de Adicao e Alteracao de Alunos 
 */
function alunos_standard_form(&$form, $aluno) {
	$form['aluno'] = array(
			'#type' => 'value',
			'#value' => $aluno,
	);
	// Dados do estudante
	$form['dados_estudante'] = array(
			'#type' => 'fieldset',
			'#title' => t('Dados do Aluno'),
	);
	$form['dados_estudante']['nome'] = array(
			'#type' => 'textfield',
			'#default_value' => $aluno->nome,
			'#required' => TRUE,
			'#title' => t('Nome'),
	);
	$form['dados_estudante']['email'] = array(
			'#type' => 'textfield',
			'#default_value' => $aluno->email,
			'#required' => TRUE,
			'#title' => t('E-mail'),
	);
	$form['dados_estudante']['cpf'] = array(
			'#type' => 'textfield',
			'#default_value' => $aluno->cpf,
			'#required' => TRUE,
			'#size' => 11,
			'#maxlength' => 11,
			'#title' => t('CPF'),
	);
	$form['dados_estudante']['curso'] = array(
			'#type' => 'select',
			'#required' => TRUE,
			'#default_value' => $aluno->curso->id,
			'#title' => 'Curso',
			'#options' => package_entities(Curso::TYPE)
	);
	
	$form['dados_estudante']['entrada'] = array(
			'#type' => 'date_popup',
  		'#title' => t('Entrada'),
			'#default_value' => $aluno->entrada,
  		'#date_format' => 'd/m/Y',
  		'#date_year_range' => '-10:+0',
	);
	
	$form['dados_estudante']['banco'] = array(
			'#type' => 'select',
			'#default_value' => $aluno->banco->id,
			'#title' => t('Banco'),
			'#options' => package_entities(Banco::TYPE),
			'#required' => TRUE,
	);
	
	$form['dados_estudante']['agencia'] = array(
			'#type' => 'textfield',
			'#default_value' => $aluno->agencia,
			'#required' => TRUE,
			'#title' => t('Agência'),
	);
	$form['dados_estudante']['conta'] = array(
			'#type' => 'textfield',
			'#default_value' => $aluno->conta,
			'#required' => TRUE,
			'#title' => t('Conta'),
	);
	
	$form['dados_estudante']['condicao'] = array(
			'#type' => 'select',
			'#default_value' => $aluno->condicao->id,
			'#title' => t('Condição do Aluno'),
			'#options' => package_entities(Condicao::TYPE),
			'#required' => TRUE,
	);
	$form['dados_estudante']['campus'] = array(
			'#type' => 'select',
			'#default_value' => $aluno->campus->id,
			'#title' => t('Campus'),
			'#options' => package_entities(Campus::TYPE),
			'#required' => TRUE,
	);
}

/** 
 * Pega os dados do formulario e retorna o objeto populado 
 */
function alunos_get_form_data($form, &$form_state) {
	$a = $form_state['values']['aluno'];	
	$aluno = new stdClass();
	
	if(!empty($a->id) ) {
		$aluno->id = $a->id;
	}
	
	$aluno->nome	 			= $form_state['values']['nome'];
	$aluno->email	 			= $form_state['values']['email'];
	$aluno->cpf 	 			= $form_state['values']['cpf'];
	$aluno->campus_id		= $form_state['values']['campus'];
	$aluno->agencia			= $form_state['values']['agencia'];
	$aluno->conta	 			= $form_state['values']['conta'];
	$aluno->banco_id		= $form_state['values']['banco'];
	$aluno->curso_id		= $form_state['values']['curso'];
	$aluno->condicao_id	= $form_state['values']['condicao'];
	$aluno->entrada   	= $form_state['values']['entrada'];
	
	return $aluno;
}

/* CADASTRO */


/** 
 * Formulário de Adição de novos Alunos 
 */
function alunos_form($form, &$form_state, $aluno) {	
	alunos_standard_form($form, $aluno);
	$form['submit'] = array(
			'#type'  => 'submit',
			'#value' => t('Cadastrar'),
	);	
	return $form;
}

/** 
 * Validacao de Formulário 
 */
function alunos_form_validate($form, &$form_state) {}

/** 
 * Submissão de dados dos formulários 
 */
function alunos_form_submit($form, &$form_state) {
	$aluno = alunos_get_form_data($form, $form_state);		
	DAO::daoFactory(Aluno::TYPE)->add($aluno);	
	drupal_set_message('Cadastro concluído!');
	$form_state['redirect'] = "alunos/" . $aluno->id;
}


/* ATUALIZACAO */


/** 
 * Formulário de Atualizacao 
 */
function alunos_edit_form($form, &$form_state, $id) {
	$aluno = DAO::daoFactory(Aluno::TYPE)->get($id);	
	alunos_standard_form($form, $aluno);
	$form['submit'] = array(
			'#type' 	=> 'submit',
			'#value' 	=> t('Atualizar'),
	);
	return $form;
}

/** 
 * Valida dados do formulário de Atualizacao 
 */
function alunos_edit_form_validate($form, &$form_state) {
	alunos_form_validate($form, $form_state);
}

/** 
 * Atualiza um aluno com dados fornecidos no formulario de atualizacao 
 */
function alunos_edit_form_submit($form, &$form_state) {
	$aluno = alunos_get_form_data($form, $form_state);
	DAO::daoFactory(Aluno::TYPE)->update($aluno);	
	
	drupal_set_message('Atualização bem-sucedida');	
	$form_state['redirect'] = "alunos/".$aluno->id;
}

/* PESQUISA */

/** 
 * Formulário de Pesquisa 
 */
function alunos_pesquisar_form($form, &$form_state) {
	$form['procurar'] = array(
			'#type' => 'textfield',
			'#autocomplete_path' => 'alunos/listar',
			'#required' => TRUE,
			'#description'=>'Nome ou CPF',
	);
	
	$form['search'] = array(
			'#type' => 'submit',
			'#value' => t('Ir'),
	);
	return $form;
}

/** 
 * Validacao do formulario de pesquisa
 */
function alunos_pesquisar_form_validate($form, &$form_state) {
	$search  = $form_state['values']['procurar'];
	$alunos = DAO::daoFactory(Aluno::TYPE)->listar();
	
	if (!empty($alunos) ) {
		foreach ($alunos as $aluno) {
			if($search == $aluno->cpf || $search == $aluno->nome) {
				drupal_goto('alunos/'.$aluno->id);
			}		
				
		}		
		
	}	
	
}